package 数组;

/**
 * @author 会玩的洋洋
 * https://leetcode-cn.com/problems/find-the-middle-index-in-array/
 */
public class _1991_找到数组的中间位置 {
    /**
     * 通过一个sum 来进行逐一递减  然后比较两端之和的值
     * 注意点： 需要排除当前下标（即中间数）
     * @param nums 目标数组
     * @return int
     */
    public int findMiddleIndex(int[] nums) {
        int n = nums.length;
        int sum = 0, sum_left = 0;

        // 循环遍历 求出数组总和
        for (int num : nums) {
            sum += num;
        }

        // 遍历数组
        for (int i = 0; i < n; i++) {
            // 将中间坐标排除
            sum -= nums[i];
            // 比较左侧与右侧之间的值
            if (sum == sum_left) {
                return i;
            }
            // 左侧添加当前下标的值
            sum_left += nums[i];
        }
        return -1;
    }
}
